package com.vf.admin.utils;

import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class StringEx {
    //传入毫秒，获取时分秒毫秒数据
    public  String getsfmhDouHao(long time){
        long hour=time/3600000; //时
        long minute=time%3600000/60000; //钟
        long second=time%60000/1000; //秒
        long hsecond=time%1000; //豪秒

        String str = hour+":"+minute+":"+second+","+hsecond;
        return str;
    }

    //传入毫秒，获取时分秒毫秒数据
    public  String getsfmhYuanDian(long time){
        long hour=time/3600000; //时
        long minute=time%3600000/60000; //钟
        long second=time%60000/1000; //秒
        long hsecond=time%1000; //豪秒

        String str = hour+":"+minute+":"+second+"."+hsecond;
        return str;
    }

    /**
     * 格式化日期为年月日
     *
     * @param date
     * @return s
     */
    public static String getDateStringDD(Date date) {
        if (date == null || date.equals(""))
            return null;
        return dateFormat(date, "dd");
    }

    /**
     * 判断是否为空
     *
     * @param src
     * @return s
     */
    public static String tNull(String src) {
        if (src == null || src.equalsIgnoreCase("null")
                || src.equalsIgnoreCase("undefined"))
            return "";
        return src;
    }

    /**
     * 判断是否为空
     *
     * @param src
     * @return s
     */
    public static Boolean ifNull(String src) {
        if ("".equals(tTrim(src))) {
            return true;
        }
        return false;
    }

    /**
     * 字符串去左右空格
     *
     * @param src
     * @return s
     */
    public static String tTrim(String src) {
        if (src == null || src.equalsIgnoreCase("null")
                || src.equalsIgnoreCase("undefined"))
            return "";
        return src.trim();
    }


    /**
     * 判断一个字串是否为空
     *
     * @param src
     * @return b
     */
    public static boolean isNull(Object src) {
        return src == null || src.toString().trim().equals("");
    }

    /**
     * 数组内容 转换为字符串
     *
     * @param src
     * @return s
     */
    public static String array2String(String src[]) {
        String mes = "";
        for (int i = 0; src != null && i < src.length; i++)
            mes += src[i] + ",";
        if (mes.endsWith(","))
            mes = mes.substring(0, mes.length() - 1);
        return mes;
    }

    /**
     * 判断一个字符串是否是一个串列表的子集
     *
     * @param parent
     * @param child
     * @return boolean
     */

    public static boolean isInList(String parent, String child) {
        parent = "," + parent + ",";
        return parent.indexOf("," + child + ",") > -1;
    }

    /**
     * 从列表里删除
     *
     * @param parent
     * @param child
     * @return s
     */
    public static String deleteFromList(String parent, String child) {
        if (!isInList(parent, child))
            return parent;
        parent = "," + parent + ",";
        parent = parent.replaceAll("," + child + ",", ",").replaceFirst("^,",
                "").replaceFirst(",$", "");
        return parent;
    }

    /**
     * 获得根据编码字符信息
     *
     * @param strSource
     * @return
     */
    public static String getStr(String strSource) {
        String strResult = "";
        if (strSource != null) {
            try {
                strResult = new String(strSource.getBytes("ISO8859_1"), "UTF-8");
                // strResult = strSource;
            } catch (Exception e) {
                strResult = "";
            }
        }
        return strResult;
    }

    /**
     * 往列表里添加内容
     *
     * @param parent
     * @param child
     * @return s
     */
    public static String add2List(String parent, String child) {
        // 验证是否已经存在
        if (isInList(parent, child))
            return parent;
        if (parent.indexOf(",") > -1)
            return parent + "," + child;
        return child;
    }

    /**
     * @param src
     * @param length
     * @return s
     */
    public static String pop(String src, int length) {
        if (src == null || src.equals(""))
            return "";
        if (src.length() <= length)
            return src;
        return "<span title=\"" + src + "\">" + src.substring(0, length)
                + "..</span>";
    }

    /**
     * @param src
     * @param length
     * @return s
     */
    public static String cut(String src, int length) {
        if (src == null || src.equals(""))
            return "";
        if (src.length() <= length)
            return src;
        return src.substring(0, length) + "..";
    }

    /**
     * 格式化日期为年月日
     *
     * @param date
     * @return s
     */
    public static String getDateStringYMD(Date date) {
        if (date == null || date.equals(""))
            return null;
        return dateFormat(date, "yyyy-MM-dd");

    }

    /**
     * 格式化日期为年月日yyyyMMdd
     *
     * @param date
     * @return s
     */
    public static String getDateStringYMd(Date date) {
        if (date == null || date.equals(""))
            return null;
        return dateFormat(date, "yyyyMMdd");

    }

    /**
     * @param str 要操作的字符串
     * @param filter 要去掉的特殊字符
     * @return
     */
    public static String filterStr(String str, List<String> filter) {
        if (!isNull(str) && null != filter && filter.size() > 0) {
            for (String f : filter) {
                str = str.replaceAll(f, "");
            }
        }
        return str;
    }

    public static Timestamp getTS(String p0) {
        Date d = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Timestamp ts;
        try {
            d = sdf.parse(p0);
        } catch (Exception e) {
        }
        ts = new Timestamp(d.getTime());
        return ts;
    }

    /**
     * 格式化日期为dd/MM/yyyy
     *
     * @param date
     * @return s
     */
    public static String getDateStringDMY(Date date) {
        if (date == null || date.equals(""))
            return "";
        return dateFormat(date, "dd/MM/yyyy");

    }

    /**
     * 格式化日期为月日
     *
     * @param date
     * @return s
     */
    public static String getDateStringMD(Date date) {
        if (date == null || date.equals(""))
            return "";
        return dateFormat(date, "MM-dd");

    }

    /**
     * 格式化日期为yyyy年MM月dd日
     *
     * @param date
     * @return s
     */
    public static String getStringYMD(Date date) {
        if (date == null || date.equals(""))
            return "";
        return dateFormat(date, "yyyy年MM月dd日");
    }

    /**
     * 格式化日期为年月日 时分秒 yyyy-MM-dd HH:mm:ss
     *
     * @param date
     * @return s
     */
    public static String getDateStringYMDHMS(Date date) {
        if (date == null || date.equals(""))
            return "";
        return dateFormat(date, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 格式化日期为周、日期
     *
     * @param date
     * @return s
     */
    public static String getDateStringWeek(Date date, String format) {
        if (date == null || date.equals(""))
            return "";

        int week = date.getDay();
        String dataStr = dateFormat(date, format);
        switch (week) {
            case 1:
                dataStr = "星期一" + "[" + dataStr + "]";
                break;

            case 2:
                dataStr = "星期二" + "[" + dataStr + "]";
                break;

            case 3:
                dataStr = "星期三" + "[" + dataStr + "]";
                break;

            case 4:
                dataStr = "星期四" + "[" + dataStr + "]";
                break;

            case 5:
                dataStr = "星期五" + "[" + dataStr + "]";
                break;

            case 6:
                dataStr = "星期六" + "[" + dataStr + "]";
                break;

            default:
                dataStr = "星期日" + "[" + dataStr + "]";
        }
        ;
        return dataStr;
    }

    /**
     * 格式化日期为yyyy-MM-dd HH:mm
     *
     * @param date
     * @return s
     */
    public static String getDateStringYMDHM(Date date) {
        if (date == null || date.equals(""))
            return "";

        int week = date.getDay();
        String dataStr = dateFormat(date, "yyyy-MM-dd HH:mm");
        switch (week) {
            case 1:
                dataStr += " 星期一";
                break;

            case 2:
                dataStr += " 星期二";
                break;

            case 3:
                dataStr += " 星期三";
                break;

            case 4:
                dataStr += " 星期四";
                break;

            case 5:
                dataStr += " 星期五";
                break;

            case 6:
                dataStr += " 星期六";
                break;

            default:
                dataStr += " 星期日";

        }
        ;

        return dataStr;
    }

    /**
     * 格式化日期为yyyy-MM-dd HH:mm
     *
     * @param date
     * @return s
     */
    public static String changDayOfWeek(Date date) {
        if (date == null || date.equals(""))
            return "";

        int week = date.getDay();
        String dataStr = "";
        switch (week) {
            case 1:
                dataStr += "周一";
                break;

            case 2:
                dataStr += "周二";
                break;

            case 3:
                dataStr += "周三";
                break;

            case 4:
                dataStr += "周四";
                break;

            case 5:
                dataStr += "周五";
                break;

            case 6:
                dataStr += "周六";
                break;

            default:
                dataStr += "周日";
        }
        ;

        return dataStr;
    }

    /**
     * 格式化日期为年月日 时分秒
     *
     * @param date
     * @return s
     */
    public static String getDateString(Date date) {
        if (date == null || date.equals(""))
            return "";
        return dateFormat(date, "yyyyMMddHHmmss");
    }

    /**
     * 格式化日期为年月日 时分秒
     *
     * @param date
     * @return s
     */
    public static String getStringYMDHMS(Date date) {
        if (date == null || date.equals(""))
            return "";
        return dateFormat(date, "yyyy年MM月dd日 HH时mm分ss秒");
    }

    /**
     * 格式化日期为年月日 时分秒
     *
     * @param date
     * @return s
     */
    public static String getStringYgMgD(Date date) {
        if (date == null || date.equals(""))
            return "";
        return dateFormat(date, "yyyy-MM-dd");
    }

    /**
     * 字符串转化为时间 yyyyMMdd
     * @return date
     * @throws ParseException
     */
    public static Date getStrDateFormat(String string) throws ParseException {
        if (string == null || "".equals(string))
            return null;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        return sdf.parse(string);
    }

    /**
     * 字符串转换为日期型数据
     *
     * @param src
     * @return date
     */
    public static Date parseDate(String src) {
        if (!src.matches("\\d{4}-\\d{1,2}-\\d{1,2}"))
            return null;
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return sf.parse(src);
        } catch (ParseException e) {
            return null;
        }
    }


    /**
     * 增加日期中某类型的某数值。如增加日期
     *
     * @param date
     *            日期
     * @param dateType
     *            类型
     * @param amount
     *            数值
     * @return 计算后日期
     */
    private static Date addInteger(Date date, int dateType, int amount) {
        Date myDate = null;
        if (date != null) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(dateType, amount);
            myDate = calendar.getTime();
        }
        return myDate;
    }

    /**
     * 增加日期的天数。失败返回null。
     *
     * @param date
     *            日期
     * @param dayAmount
     *            增加数量。可为负数
     * @return 增加天数后的日期
     */
    public static Date addDay(Date date, int dayAmount) {
        return addInteger(date, Calendar.DATE, dayAmount);
    }

    /**
     * 得到指定日期的前N天的日期
     * @return Date
     * @throws ParseException
     */
    public static Date afterDate(Date date,int n) throws ParseException{
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calenDar = Calendar.getInstance();
        calenDar.setTime(date);
        calenDar.set(Calendar.DATE, calenDar.get(Calendar.DATE) - n);
        Date wutianDate = formatter.parse(formatter.format(calenDar.getTime()));
        String startDatestr = formatter.format(wutianDate);
        return wutianDate;
    }

    /**
     * 得到指定日期的前N天的日期
     * @return Date
     * @throws ParseException
     */
    public static String afterDateStr(Date date,int n) throws ParseException{
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calenDar = Calendar.getInstance();
        calenDar.setTime(date);
        calenDar.set(Calendar.DATE, calenDar.get(Calendar.DATE) - n);
        Date wutianDate = formatter.parse(formatter.format(calenDar.getTime()));
        String startDatestr = formatter.format(wutianDate);
        return startDatestr;
    }

    /**
     * 得到指定或者当前时间前n天的Calendar
     *
     * @param c
     * @param n
     * @return
     */
    public static Calendar afterNDays(Calendar c, long n) {
        // 偏移量，给定n天的毫秒数
        long offset = n * 24 * 60 * 60 * 1000;
        Calendar calendar = null;
        if (c != null) {
            calendar = c;
        } else {
            calendar = Calendar.getInstance();
        }

        calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
        return calendar;
    }

    /**
     * 字符串转换为日期型数据
     *
     * @param src
     * @return date
     */
    public static Date parseDateAndTime(String src) {
        if (!src.matches("\\d{4}-\\d{1,2}-\\d{1,2} \\d{2}:\\d{2}:\\d{2}"))
            return null;
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            return sf.parse(src);
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 字符串转换为时间型数据
     *
     * @param src
     * @return date
     */
    public static Date parseTime(String src) {
        if (!src.matches("\\d{2}:\\d{2}:\\d{2}"))
            return null;
        SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
        try {
            return sf.parse(src);
        } catch (ParseException e) {
            return null;
        }
    }
//
    /**
     * 时间转化为字符串
     *
     * @param date
     * @param format
     * @return s
     */
    private static String dateFormat(Date date, String format) {
        return new SimpleDateFormat(format).format(date);
    }

    /**
     * 验证一个串是否是一个数字组合 用于GET参数传递的验证
     *
     * @param src
     * @return b
     */
    public static boolean isNumber(String src) {
        if (src == null || src.equals(""))
            return false;
        return src.matches("^\\d{1,}(.\\d{1,})?$");
    }

    /**
     * 判断一个字串是否不为空
     *
     * @param src
     * @return b
     */
    public static boolean isNotNull(Object src) {
        return !isNull(src);
    }

    /**
     * 判断一个字串不等于空并且不等于0
     *
     * @param src
     * @return b
     */
    public static boolean isNullOrLing(Object src) {
        if(src == null){
            return true;
        }
        String srcStr = ""+src;
        return srcStr.toString().trim().equals("") || srcStr.toString().trim().equals("0");
    }

    /**
     * 转换带分隔符串为Integer数组 后台中用到
     *
     * @param src
     * @return integer[]
     */
    public static Integer[] getIntegerFromString(String src) {
        if (!src.matches("^\\d+[,\\d+]{0,}\\d{0,}$"))
            return new Integer[] {};
        String _src[] = src.split(",");
        Integer[] ret = new Integer[_src.length];
        for (int i = 0; i < ret.length; i++) {
            ret[i] = Integer.valueOf(_src[i]);
        }
        return ret;
    }

    /**
     * 转换带分隔符串为Long数组 后台中用到
     *
     * @param src
     * @return long[]
     */
    public static Long[] getLongFromString(String src) {
        if (!src.matches("^\\d+[,\\d+]{0,}\\d{0,}$"))
            return new Long[] {};
        String _src[] = src.split(",");
        Long[] ret = new Long[_src.length];
        for (int i = 0; i < ret.length; i++) {
            ret[i] = Long.valueOf(_src[i]);
        }
        return ret;
    }

    /**
     * 特殊处理文本内容，对关键字可以添加前缀后缀，实现关键字着重显示 例 specilizeText("中国人","国","<font
     * color=red>","</font>"); 结果为 中<font color=red>国</font>人
     *
     * @param content
     * @param keywords
     * @param prefix
     * @param suffix
     * @return t
     */
    public static String specilizeText(String content, String keywords,
                                       int holdLength, String prefix, String suffix) {
        String reg = keywords.replaceAll("\\s", ".*");
        Pattern p = Pattern.compile(reg, Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(content);

        if (m.find()) {
            // 能匹配
            int start = m.start();
            int end = start + holdLength;
            if (end > content.length())
                end = content.length();
            String temp = (start > 0 ? "..." : "")
                    + content.substring(start, end)
                    + (end < content.length() - 1 ? "..." : "");
            reg = keywords.replaceAll("\\s", "|");
            temp = temp.replaceAll("(" + reg + ")", prefix + "$1" + suffix);
            return temp;
        }
        return cut(content, holdLength);
    }

    /**
     * 字符串dd/MM/yyyy转换为日期型数据
     *
     * @param src
     * @return date
     */
    public static Date parseStringtoDate(String src) {
        if (!src.matches("^\\d{2}/\\d{2}/\\d{4}$"))
            return null;
        SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");
        try {
            return sf.parse(src);
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 字符串yyyy-MM-dd转换为日期型数据
     *
     * @param src
     * @return date
     */
    public static Date parseStringtoDate1(String src) {
        if (!src.matches("^\\d{4}-\\d{2}-\\d{2}$"))
            return null;
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return sf.parse(src);
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 计算两个日期之差
     *
     * @param date
     * @param date1
     * @return
     */
    public static int diffDate(Date date, Date date1) {
        return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
    }

    public static long getMillis(Date date) {
        java.util.Calendar c = java.util.Calendar.getInstance();
        c.setTime(date);
        return c.getTimeInMillis();
    }

    /**
     * 计算两个日期月份大小
     *
     * @param DATE1
     * @param DATE2
     * @return
     */
    public static int compare_date(String DATE1, String DATE2) {

        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
        try {
            Date dt1 = sdf.parse(DATE1);
            Date dt2 = sdf.parse(DATE2);
            if (dt1.getTime() > dt2.getTime()) {
                return 1;
            } else if (dt1.getTime() < dt2.getTime()) {
                return -1;
            } else {
                return 0;
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return 0;
    }

    /**
     * 计算两个日期大小
     *
     * @param DATE1
     * @param DATE2
     * @return
     */
    public static int compare_dateYMDHMS(String DATE1, String DATE2) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        try {
            Date dt1 = sdf.parse(DATE1);
            Date dt2 = sdf.parse(DATE2);
            if (dt1.getTime() < dt2.getTime()) {
                return 1;
            } else if (dt1.getTime() > dt2.getTime()) {
                return -1;
            } else {
                return 0;
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return 0;
    }

    /**
     * 字符串转换转换成数组
     * @return
     */
    public static String[] toArryay(String str) {
        if (str.indexOf(",") != -1) {
            return str.split(",");
        } else {
            String myids[] = new String[1];
            myids[0] = str;
            return myids;
        }
    }

    /**
     * 字符串转换转换成数组
     * @return
     */
    public static Long[] toLongArryay(String str) {
        Long ls[];
        String[] strs = new String[1];
        if (str.indexOf(",") != -1) {
            int j = str.split(",").length;
            strs = new String[j];
            strs = str.split(",");
        } else {
            strs = new String[1];
            strs[0] = str;
        }
        ls = new Long[strs.length];
        for (int i = 0; i < strs.length; i++) {
            ls[i] = Long.parseLong(strs[i]);
        }
        return ls;
    }

    /**
     * 获得一个32位的伪随机数
     *
     * @return
     */
    public static String randomString() {
        return UUID.randomUUID().toString().replaceAll("-", "");
    }

    /**
     * 根据年月日生成日期
     *
     * @param year
     * @param month
     * @param date
     * @return
     */
    public static Date getDate(int year, int month, int date) {
        Calendar cal = new java.util.GregorianCalendar(year, month, date);
        return cal.getTime();
    }

    /**
     * 字符串转换为日期型数据 yyyy-MM-dd HH:mm:ss
     *
     * @param src
     * @return date
     */
    public static Date parseymdhmsDate(String src) {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            return sf.parse(src);
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 得到真实ip地址
     *
     * @param request
     * @return
     */
    public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }


    /**
     * 根据会员编码生成会员目录路径
     *
     * @param code
     *            会员编码
     * @return
     */
    public static String getUserFolderPath(String code) {
        StringBuffer str = new StringBuffer(code);
        str.insert(3, "/");
        str.insert(7, "/");
        str.insert(11, "/");
        str.insert(13, "/");
        return str.toString();
    }

    /**
     * 按天数 获取日期
     *
     * @param date
     * @param num
     * @return Date
     */
    public static Date getDateByDateNum(Date date, int num) {
        String dates = getDateStringYMD(date);
        if (num != 0) {
            GregorianCalendar gc = new GregorianCalendar();
            gc.setTime(date);
            gc.add(Calendar.DATE, num);
            Date day = gc.getTime();
            dates = getDateStringYMD(day);
        }
        return parseDate(dates);
    }

    /**
     * 当前时间后的多少分钟以后的时间
     * @param date  当前时间
     *        minutenum: 多少分钟后
     * @return
     */
    public static Date getDateByLastNum(Date date,int seconds){
        Date afterDate = new Date(date.getTime() + seconds*1000);
        return afterDate;
    }

    //测试
//    public static void aa() {
//        String html = "<html><head><title>First parse</title></head>"
//                + "<body><iframe><html><body>Parsed HTML into a doc.</body></html></iframe></body></html>";
//
//        Document doc = Jsoup.parse(html);
//        String body = doc.select("iframe").first().text();// 得到ifrmae下的html字符串
//        Document ifmDoc = Jsoup.parseBodyFragment(body); // 将html字符串转成Document对象
//        // System.out.println(ifmDoc);
//        String ibody = ifmDoc.select("body").text();
//        System.out.println(ibody);
//    }

    // 过滤特殊字符
    public   static   String StringFilter(String   str)   throws PatternSyntaxException {
        // 只允许字母和数字
        // String   regEx  =  "[^a-zA-Z0-9]";
        // 清除掉所有特殊字符
        String regEx="[`~!@#$%^&*()+=|{}':;',//[//].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";
        Pattern   p   =   Pattern.compile(regEx);
        Matcher   m   =   p.matcher(str);
        return   m.replaceAll("").trim();
    }

    public   void   testStringFilter()   throws   PatternSyntaxException   {
        String   str   =   "*adCVs*34_a _09_b5*[/435^*&城池()^$$&*).{}+.|.)%%*(*.中国}34{45[]12.fd'*&999下面是中文的字符￥……{}【】。，；’“‘”？";
        System.out.println(str);
        System.out.println(StringFilter(str));
    }

    //
//	/**
//	 * 验证一个串是否是一个数字组合 用于GET参数传递的验证
//	 *
//	 * @param src
//	 * @return b
//	 */
//	public static boolean isNumber(String src) {
//		if (src == null || src.equals(""))
//			return false;
//		return src.matches("^\\d{1,}(.\\d{1,})?$");
//	}
//
//
//	/**
//	 * 转换带分隔符串为Integer数组 后台中用到
//	 *
//	 * @param src
//	 * @return integer[]
//	 */
//	public static Integer[] getIntegerFromString(String src) {
//		if (!src.matches("^\\d+[,\\d+]{0,}\\d{0,}$"))
//			return new Integer[] {};
//		String _src[] = src.split(",");
//		Integer[] ret = new Integer[_src.length];
//		for (int i = 0; i < ret.length; i++) {
//			ret[i] = Integer.valueOf(_src[i]);
//		}
//		return ret;
//	}
//
//	/**
//	 * 转换带分隔符串为Long数组 后台中用到
//	 *
//	 * @param src
//	 * @return long[]
//	 */
//	public static Long[] getLongFromString(String src) {
//		if (!src.matches("^\\d+[,\\d+]{0,}\\d{0,}$"))
//			return new Long[] {};
//		String _src[] = src.split(",");
//		Long[] ret = new Long[_src.length];
//		for (int i = 0; i < ret.length; i++) {
//			ret[i] = Long.valueOf(_src[i]);
//		}
//		return ret;
//	}
//
//	/**
//	 * 特殊处理文本内容，对关键字可以添加前缀后缀，实现关键字着重显示 例 specilizeText("中国人","国","<font
//	 * color=red>","</font>"); 结果为 中<font color=red>国</font>人
//	 *
//	 * @param content
//	 * @param keywords
//	 * @param prefix
//	 * @param suffix
//	 * @return t
//	 */
//	public static String specilizeText(String content, String keywords,
//			int holdLength, String prefix, String suffix) {
//		String reg = keywords.replaceAll("\\s", ".*");
//		Pattern p = Pattern.compile(reg, Pattern.CASE_INSENSITIVE);
//		Matcher m = p.matcher(content);
//
//		if (m.find()) {
//			// 能匹配
//			int start = m.start();
//			int end = start + holdLength;
//			if (end > content.length())
//				end = content.length();
//			String temp = (start > 0 ? "..." : "")
//					+ content.substring(start, end)
//					+ (end < content.length() - 1 ? "..." : "");
//			reg = keywords.replaceAll("\\s", "|");
//			temp = temp.replaceAll("(" + reg + ")", prefix + "$1" + suffix);
//			return temp;
//		}
//		return cut(content, holdLength);
//	}
//
//	/**
//	 * 字符串dd/MM/yyyy转换为日期型数据
//	 *
//	 * @param src
//	 * @return date
//	 */
//	public static Date parseStringtoDate(String src) {
//		if (!src.matches("^\\d{2}/\\d{2}/\\d{4}$"))
//			return null;
//		SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");
//		try {
//			return sf.parse(src);
//		} catch (ParseException e) {
//			return null;
//		}
//	}
//
//	/**
//	 * 字符串yyyy-MM-dd转换为日期型数据
//	 *
//	 * @param src
//	 * @return date
//	 */
//	public static Date parseStringtoDate1(String src) {
//		if (!src.matches("^\\d{4}-\\d{2}-\\d{2}$"))
//			return null;
//		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
//		try {
//			return sf.parse(src);
//		} catch (ParseException e) {
//			return null;
//		}
//	}
//
//	/**
//	 * 计算两个日期之差
//	 *
//	 * @param date
//	 * @param date1
//	 * @return
//	 */
//	public static int diffDate(Date date, Date date1) {
//		return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
//	}
//
//	public static long getMillis(Date date) {
//		java.util.Calendar c = java.util.Calendar.getInstance();
//		c.setTime(date);
//		return c.getTimeInMillis();
//	}
//
//	/**
//	 * 计算两个日期月份大小
//	 *
//	 * @param DATE1
//	 * @param DATE2
//	 * @return
//	 */
//	public static int compare_date(String DATE1, String DATE2) {
//
//		SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
//		try {
//			Date dt1 = sdf.parse(DATE1);
//			Date dt2 = sdf.parse(DATE2);
//			if (dt1.getTime() > dt2.getTime()) {
//				return 1;
//			} else if (dt1.getTime() < dt2.getTime()) {
//				return -1;
//			} else {
//				return 0;
//			}
//		} catch (Exception exception) {
//			exception.printStackTrace();
//		}
//		return 0;
//	}
//
//	/**
//	 * 计算两个日期大小
//	 *
//	 * @param DATE1
//	 * @param DATE2
//	 * @return
//	 */
//	public static int compare_dateYMDHMS(String DATE1, String DATE2) {
//
//		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//		try {
//			Date dt1 = sdf.parse(DATE1);
//			Date dt2 = sdf.parse(DATE2);
//			if (dt1.getTime() < dt2.getTime()) {
//				return 1;
//			} else if (dt1.getTime() > dt2.getTime()) {
//				return -1;
//			} else {
//				return 0;
//			}
//		} catch (Exception exception) {
//			exception.printStackTrace();
//		}
//		return 0;
//	}
//
//	/**
//	 * add by ygt at 2009.07.08 字符串转换转换成数组
//	 *
//	 * @param ids
//	 * @return
//	 */
//	public static String[] toArryay(String str) {
//		if (str.indexOf(",") != -1) {
//			return str.split(",");
//		} else {
//			String myids[] = new String[1];
//			myids[0] = str;
//			return myids;
//		}
//	}
//
//	/**
//	 * add by ygt at 2009.07.08 字符串转换转换成数组
//	 *
//	 * @param ids
//	 * @return
//	 */
//	public static Long[] toLongArryay(String str) {
//		Long ls[];
//		String[] strs = new String[1];
//		if (str.indexOf(",") != -1) {
//			int j = str.split(",").length;
//			strs = new String[j];
//			strs = str.split(",");
//		} else {
//			strs = new String[1];
//			strs[0] = str;
//		}
//		ls = new Long[strs.length];
//		for (int i = 0; i < strs.length; i++) {
//			ls[i] = Long.parseLong(strs[i]);
//		}
//		return ls;
//	}
//
//	/**
//	 * 获得一个32位的伪随机数
//	 *
//	 * @return
//	 */
//	public static String randomString() {
//		return UUID.randomUUID().toString().replaceAll("-", "");
//	}
//
//	/**
//	 * 根据年月日生成日期
//	 *
//	 * @param year
//	 * @param month
//	 * @param date
//	 * @return
//	 */
//	public static Date getDate(int year, int month, int date) {
//		Calendar cal = new java.util.GregorianCalendar(year, month, date);
//		return cal.getTime();
//	}
//
//	/**
//	 * 字符串转换为日期型数据 yyyy-MM-dd HH:mm:ss
//	 *
//	 * @param src
//	 * @return date
//	 */
//	public static Date parseymdhmsDate(String src) {
//		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//		try {
//			return sf.parse(src);
//		} catch (ParseException e) {
//			return null;
//		}
//	}
//
//	/**
//	 * 根据会员编码生成会员目录路径
//	 *
//	 * @param code
//	 *            会员编码
//	 * @return
//	 */
//	public static String getUserFolderPath(String code) {
//		StringBuffer str = new StringBuffer(code);
//		str.insert(3, "/");
//		str.insert(7, "/");
//		str.insert(11, "/");
//		str.insert(13, "/");
//		return str.toString();
//	}
//
//	/**
//	 * 按天数 获取日期
//	 *
//	 * @param date
//	 * @param num
//	 * @return Date
//	 */
//	public static Date getDateByDateNum(Date date, int num) {
//		String dates = getDateStringYMD(date);
//		if (num != 0) {
//			GregorianCalendar gc = new GregorianCalendar();
//			gc.setTime(date);
//			gc.add(Calendar.DATE, num);
//			Date day = gc.getTime();
//			dates = getDateStringYMD(day);
//		}
//		return parseDate(dates);
//	}
//
//	//测试
//	public static void aa() {
//		String html = "<html><head><title>First parse</title></head>"
//		+ "<body><iframe><html><body>Parsed HTML into a doc.</body></html></iframe></body></html>";
//
//		Document doc = Jsoup.parse(html);
//		String body = doc.select("iframe").first().text();// 得到ifrmae下的html字符串
//		Document ifmDoc = Jsoup.parseBodyFragment(body); // 将html字符串转成Document对象
//		// System.out.println(ifmDoc);
//		String ibody = ifmDoc.select("body").text();
//		System.out.println(ibody);
//		}
//
//	// 过滤特殊字符
//	   public   static   String StringFilter(String   str)   throws   PatternSyntaxException   {
//	               // 只允许字母和数字
//	               // String   regEx  =  "[^a-zA-Z0-9]";
//	                  // 清除掉所有特殊字符
//	         String regEx="[`~!@#$%^&*()+=|{}':;',//[//].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";
//	         Pattern   p   =   Pattern.compile(regEx);
//	         Matcher   m   =   p.matcher(str);
//	         return   m.replaceAll("").trim();
//	         }
//
//	   public   void   testStringFilter()   throws   PatternSyntaxException   {
//	         String   str   =   "*adCVs*34_a _09_b5*[/435^*&城池()^$$&*).{}+.|.)%%*(*.中国}34{45[]12.fd'*&999下面是中文的字符￥……{}【】。，；’“‘”？";
//	         System.out.println(str);
//	         System.out.println(StringFilter(str));
//	         }
//
    public static void main(String[] a) {
////		System.out.println(new Date().getTime()+"------------");
////		System.out.println(new Date().getTime()-parseymdhmsDate("2016-04-24 13:26:00").getTime());
//////		long ll = 1461456880000;
////		System.out.println(getDateStringYMDHMS(new Date(1461427370000l))+"=====");
////		System.out.println(getDateStringYMDHMS(new Date(1461348012000l))+"=====");
////
////		List<Object> omap = null;
////
////		for(Object obj:omap){
////			//System.out.println("----");
////		}
////		String url = "http://mp.weixin.qq.com/s?src=3&timestamp=1462877245&ver=1&signature=qAlbCS2Lb1-KHHK-tgx7Mcpt0Cz1hx5OagTXGuhDwsWo7tcYecOumKkD1xt8pCt0ekaVRjNSBYj5pUH6aEsnPU8EYTx0rY3Obsnle0D-KJtqjizsYLV-OZWnZ*R8qVxYMKuwan9xAZ-z2roZMZ453MYMUo0W4x18d0nfB2EaWJg=";
////		String url2 = "http://mp.weixin.qq.com/s?src=3&timestamp=1463624653&ver=1&signature=4yNKSueA12fl7sLuNhvM5TvFuMRdLkr43d6MkXGGP013JhaC9PkVvUW1Rr-NIuTfNYAlRHbN-h0V6sOCkSmL0oT9WgqXahVXl5l1XS7IVtZcBIz48ilz8lGwloo*dkOfCDeHTeq1JNXj5AR5Ksrln*uUef*KR21mcS0k8PLpqv8=";
////		Document nrinfo = null;
//		try{
////			 nrinfo = Jsoup.connect(url2).timeout(10000).header("User-Agent", " Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0").get();
////			 Document doc = Jsoup.parse("c:/nhtml/b4.html");
////			 if(nrinfo!=null){
////				 String body = nrinfo.select("iframe").first().text();// 得到ifrmae下的html字符串
//
////				 nrinfo.select("[class=rich_media_tool]").remove();
////				 nrinfo.select("[class=rich_media_area_extra]").remove();
////				 nrinfo.select("[class=qr_code_pc_outer]").remove();
////				 Document ifmDoc = Jsoup.parseBodyFragment(body); // 将html字符串转成Document对象
////				 nrinfo.select("[class=ddddd]").remove();
////				String nstr = HtmlStrUtils.uploadPicSaveLocal(nrinfo.toString(),"c:/nhtml/pic/","c:/nhtml/pic/");
//
//				//写入文件
////				FileUtil.write("c:/nhtml/b4.html", nstr, "utf-8");
//
////				 ShareBean sb = new ShareBean();
////				 sb.setGadid(12);
////				 sb.setGuid(17);
////				 sb.setWzurl(url2);
////
//////				 InitAds iad =new InitAds();
//////				String aaurl = iad.hcgg(nrinfo.toString(), sb, "111111");
//////				System.out.println(aaurl);
////				CatchHtml ch = new CatchHtml();
////				String aaurl =  ch.getHtmlInfo(sb);
////				System.out.println(aaurl);
////			 }
//
//
////
////			for(int i=0;i<10;i++){
////				int rnum = (int)(1+Math.random()*(10-1+1));
////				System.out.println(rnum);
////			}
////
////
////			 String   str   =   "*adCVs*34_a _09_b5*[/435^*&城池()^$$&*).{}+.|.)%%*(*.中国}34{45[]12.fd'*&999下面是中文的字符￥……{}【】。，；’“‘”？";
////	         System.out.println(str);
////	         System.out.println(StringFilter(str));
//
//			for(int i=0;i<=19;i++){
//				if(i==0){
//					continue;
//				}
//				System.out.println("---"+i);
//			}
//
//
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//
////		aa();
//		Calendar calendar1 = Calendar.getInstance();
//        calendar1.set(calendar1.get(Calendar.YEAR), calendar1.get(Calendar.MONTH),calendar1.get(Calendar.DAY_OF_MONTH),0,0,0);
//		Calendar c = StringEx.afterNDays(calendar1, 31);
//
//		System.out.println(getStringYMDHMS(c.getTime())+"-----"+c.getTimeInMillis()+getStringYMDHMS(new Date(1489386821909l)));

//		System.out.println(getStringYMDHMS(new Date(1489386821909l)));//2017年03月13日 15时25分34秒

        try{
            System.out.println(afterDateStr(new Date(),2));
        }catch(Exception e){
            e.printStackTrace();
        }

    }
}
